package com.test.qpbgboot.schedule.service;

import com.test.qpbgboot.schedule.pojo.dto.EscortScheduleQuery;
import com.test.qpbgboot.schedule.pojo.dto.EscortScheduleSaveParam;
import com.test.qpbgboot.schedule.pojo.dto.RoomScheduleQuery;
import com.test.qpbgboot.schedule.pojo.dto.RoomScheduleSaveParam;
import com.test.qpbgboot.schedule.pojo.entity.OrderInfo;
import com.test.qpbgboot.schedule.pojo.vo.EscortScheduleVO;
import com.test.qpbgboot.schedule.pojo.vo.RoomScheduleVO;

import javax.validation.Valid;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.List;

public interface ScheduleService {
    List<RoomScheduleVO> roomScheduleSelect(RoomScheduleQuery roomScheduleQuery);

    void roomScheduleSave(RoomScheduleSaveParam roomScheduleSaveParam);

    List<EscortScheduleVO> escortScheduleSelect(@Valid EscortScheduleQuery escortScheduleQuery);

    void escortScheduleSave(@Valid EscortScheduleSaveParam escortScheduleSaveParam);

    void checkRoomSchedule(Long roomId, LocalDate appointmentDate, LocalTime startTime, LocalTime endTime);

    void checkRoomSchedule(OrderInfo orderInfo);

    void checkEscortSchedule(Long escortId, LocalDate appointmentDate, LocalTime startTime, LocalTime endTime);

    void checkEscortSchedule(OrderInfo orderInfo);

    void roomAndEscortScheduleGenerate();

    void refreshTable();
}
